// 引入 axios 库用于 HTTP 请求
import axios from "axios"
// 引入配置文件中的基础 URL 和超时时间
import { BASE_URL, TIMEOUT } from "./config"

// 定义 HYRequest 类用于封装 axios 请求
class HYRequest {
  // 类构造器接收基础 URL 和超时时间作为参数
  constructor(baseURL, timeout) {
    // 通过 axios.create 创建 axios 实例，并配置基础 URL 和超时时间
    this.instance = axios.create({
      baseURL,
      timeout
    })

    // 设置响应拦截器
    this.instance.interceptors.response.use((res) => {
      // 对响应数据进行处理，这里仅返回响应的数据部分
      return res.data
    }, err => {
      // 对响应错误进行处理，这里直接返回错误信息
      return err
    })
  }

  // 定义 request 方法，接收请求配置参数
  request(config) {
    // 调用 axios 实例的 request 方法发起请求
    return this.instance.request(config)
  }

  // 定义 get 方法，接收请求配置参数，指定请求方法为 'get'
  get(config) {
    return this.request({ ...config, method: "get" })
  }

  // 定义 post 方法，接收请求配置参数，指定请求方法为 'post'
  post(config) {
    return this.request({ ...config, method: "post" })
  }
}

// 使用配置文件中的基础 URL 和超时时间创建 HYRequest 实例，并导出
export default new HYRequest(BASE_URL, TIMEOUT)